package cn.lcsjsxy.yxz.Inheritanceexercises;

public class CheckAccount extends Account{

    //创建Account类的一个子类CheckAccount代表可透支的账户，该账户中定义一个属性overdraft代表可透支限额。
    //在CheckAccount类中重写withdraw方法，其算法如下：
    //		如果（取款金额<账户余额），
    //		    可直接取款
    //		如果（取款金额>账户余额），
    //		    计算需要透支的额度
    //		判断可透支额overdraft是否足够支付本次透支需要，如果可以
    //			将账户余额修改为0，冲减可透支金额
    //		如果不可以
    //			提示用户超过可透支额的限额

    //
    private double overdraft;

    public CheckAccount(int id, double balance, double annuallnterestRate,double overdraft){
    super(id, balance, annuallnterestRate);
    this.overdraft = overdraft;
    }

    public double getOverdraft() {
        return overdraft;
    }

    public void setOverdraft(double overdraft) {
        this.overdraft = overdraft;
    }

    public void withdraw(double amount){
        //有钱
        if (getBalance() >= amount){
            setBalance(getBalance() - amount);
            //或
            //super.withdraw(amount);
            //没钱   透支
        }else if (overdraft >= amount - getBalance()){
            overdraft -= (amount - getBalance());
            setBalance(0);
            //或
            super.withdraw(getBalance());
            //没钱
        }else {
            System.out.println("超过透支限额!!!");
        }




    }
}
